МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Звіт
про виконання лабораторної роботи №3
з курсу
“ Програмування комп’ютерної графіки”
Підготував: ст. гр. СІ- 22
Федорич В. С.
Прийняв: Іванюк О. О.
Львів-2010
Мета роботи: вивчити функції для управління кольорами та стилями графічних зображень; навчитися складати програми на алгоритмічній мові С++ для побудови різноманітних графічних зображень в середовищі Microsoft Visual Studio C++ 2008
ЗАВДАННЯ
Написати програму на алгоритмічній мові С++, яка виводить на екран розмальоване графічне зображення. Варіант завдання береться згідно з вказівкою викладача з таблиці 1.
Таблиця 1. Завдання до лабораторної роботи
N% п/п
Варіанти завдань
13.
/
Список змінних, які використовуються в коді програми, та їх пояснення:
dc.MoveTo() – переносить курсор у задану точку;
dc.LineTo() – будує лінію до заданої точки;
CBrush grey2_brush;
grey2_brush.CreateSolidBrush(RGB(255,255,0));
dc.SelectObject(&grey2_brush); - Створення та використання користувацького пера;
dc.FloodFill(x, y, Color); - замальовує область екрану поточним пензлем х,у – координати точки всередині замкнутої області; Color – колір межі до якої буде здійснюватися замалювання;
dc.SelectStockObject(Color); - перо , Color – колір пера;
Блок-схема алгоритму програми:
Остаточна версія програми:
#include "stdafx.h"
#include "lab3.h"
#include "ChildView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
CChildView::CChildView()
{
}
CChildView::~CChildView()
{
}
BEGIN_MESSAGE_MAP(CChildView, CWnd)
ON_WM_PAINT()
END_MESSAGE_MAP()
BOOL CChildView::PreCreateWindow(CREATESTRUCT& cs)
{
if (!CWnd::PreCreateWindow(cs))
return FALSE;
cs.dwExStyle |= WS_EX_CLIENTEDGE;
cs.style &= ~WS_BORDER;
cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS,
::LoadCursor(NULL, IDC_ARROW), reinterpret_cast<HBRUSH>(COLOR_WINDOW+1), NULL);
return TRUE;
}
void CChildView::OnPaint()
{
CPaintDC dc(this);
CPen pen;
//ракета полум’я
CBrush grey2_brush;
grey2_brush.CreateSolidBrush(RGB(255,255,0));
dc.SelectObject(&grey2_brush);
dc.FloodFill(547, 417, RGB(255,255,0));
dc.MoveTo(544, 415);
dc.LineTo(559, 436);
dc.LineTo(620, 387);
dc.LineTo(605, 380);
dc.LineTo(544, 415);
dc.FloodFill(547, 415, RGB(255,255,0));
dc.MoveTo(670, 335);
dc.LineTo(704, 315);
dc.LineTo(748, 292);
dc.LineTo(739, 305);
dc.LineTo(682, 350);
CBrush grey8_brush;
grey8_brush.CreateSolidBrush(RGB(0,0,0));
dc.SelectObject(&grey8_brush);
dc.MoveTo(544, 417);
dc.LineTo(544, 410);
dc.LineTo(562, 397);
dc.LineTo(566, 402);
dc.LineTo(544, 417);
dc.FloodFill(546, 411, RGB(0,0,0));
CBrush gr_brush;
gr_brush.CreateSolidBrush(RGB(0,0,0));
dc.SelectObject(&gr_brush);
dc.MoveTo(559, 436);
dc.LineTo(560, 440);
dc.LineTo(573, 431);
dc.LineTo(572, 426);
dc.LineTo(559, 436);
dc.FloodFill(560, 438, RGB(0,0,0));
dc.MoveTo(580, 395);
dc.LineTo(580, 389);
dc.LineTo(603, 375);
dc.LineTo(605, 380);
dc.LineTo(580, 395);
dc.FloodFill(581, 390, RGB(0,0,0));
pen.CreatePen(2,6,RGB(0,0,0));
dc.SelectObject(&pen);
dc.MoveTo(440, 430);
dc.LineTo(560, 360);
dc.LineTo(531, 345);
dc.LineTo(626, 279);
dc.LineTo(709, 390);
dc.LineTo(678, 413);
dc.LineTo(531, 345);
dc.MoveTo(645, 305);
dc.LineTo(728, 248);
dc.LineTo(751, 253);
dc.LineTo(826, 211);
dc.LineTo(761, 167);
dc.LineTo(738, 101);
dc.LineTo(687, 124);
dc.LineTo(625, 250);
dc.LineTo(761, 167);
dc.MoveTo(659, 231);
dc.LineTo(751, 253);
dc.MoveTo(648, 203);
dc.LineTo(479, 293);
dc.LineTo(473, 324);
dc.LineTo(431, 352);
dc.LineTo(407, 348);
dc.LineTo(410, 320);
dc.LineTo(448, 293);
dc.LineTo(479, 294);
dc.MoveTo(507, 277);
dc.LineTo(515, 230);
dc.LineTo(587, 187);
dc.LineTo(592, 232);
dc.MoveTo(407, 348);
dc.LineTo(322, 433);
...